%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
pd.set_option('display.max_columns', 500)
import seaborn as sns
sns.set_style("dark")
plt.rcParams['figure.figsize'] = 8, 6
from sklearn.cross_validation import StratifiedKFold, KFold
import pickle
import time
import numpy as np
import matplotlib.pyplot as plt
import io
import skimage.transform
import optparse
import os
import json
import glob
from skimage import color
import tqdm
from scipy.spatial.distance import cosine, euclidean
import skimage.morphology as morphology
import leveldb as ldb
data = json.load(open('./data.json'))
feats = pickle.load(open('./features_seg.pkl', 'rb'))
layer_names = ['conv1_2', 'conv2_2', 'conv3_3', 'conv4_2']
db = ldb.LevelDB('./db_style')
top_n = 10
for q_img_path in data.keys():
print q_img_path
q_img = plt.imread(q_img_path)
q_features = []
for layer in layer_names:
q_features.append(np.frombuffer(db.Get(q_img_path + ':' + layer)))
dist = {}
for r_img_path in tqdm.tqdm(data[q_img_path]):
r_img_path = './images/' + r_img_path
r_features = []
for layer in layer_names:
r_features.append(np.frombuffer(db.Get(r_img_path + ':' + layer)))
dist[r_img_path] = 0
for i in range(len(layer_names)):
dist[r_img_path] += cosine(q_features[i], r_features[i])
print 'QUERY:'
plt.imshow(q_img)
plt.show()
print 'RESPONSE:'
res = sorted(dist.items(), key=lambda t: t[1], reverse=False)
for r_img_path, _ in res[:top_n]:
r_img = plt.imread(r_img_path)
plt.imshow(r_img)
plt.show()